package com.example.RuanJianKeShe.Dao.impl;

import com.example.RuanJianKeShe.Bean.TC;
import com.example.RuanJianKeShe.Dao.TeaCourseDao;
import com.example.RuanJianKeShe.Utils.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;

public class TeaCourseDaoImpl implements TeaCourseDao {

    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());


    /**
     * 添加一条授课信息
     *
     * @param tc 教师授课对象
     * @return boolean
     */
    @Override
    public boolean addTeacherCourse(TC tc) {

        if(!isExist(tc.getCno())){
            String sql = "insert into tc(tno,cno,teachTime,teachweek,createTime)  values(?,?,?,?,?)";
            try{
                template.update(sql,tc.getTno(),tc.getCno(),tc.getTeachTime(),tc.getTeachWeek(),tc.getCreateTime());
                return true;
            }catch (Exception e){
                e.printStackTrace();
            }
        }

        return false;
    }

    /**
     * 查询教师所授的所有课程
     *
     * @param tno 教师
     * @return 授课集合
     */
    @Override
    public List<TC> getTeacherCourse(int tno) {
        String sql = "select * from tc where tno = ?";
        try{
            List<TC> tcList = template.query(sql,new BeanPropertyRowMapper<TC>(TC.class),tno);
            return tcList;
        }catch (Exception e){
            e.printStackTrace();
        }

        return null;
    }

    /**
     * 删除教师所授课程
     *
     * @param tno 教师号
     * @param cno 课程号
     * @return boolean
     */
    @Override
    public boolean delTeacherCoureseByTnoAndCno(int tno, int cno) {
        String sql = "delete from tc where tno = ? and cno =?";
        try{
            template.update(sql,tno,cno);
            return true;
        }catch (Exception e){
            e.printStackTrace();
        }

        return false;
    }

    /**
     * 获取所有授课信息
     *
     * @return 所有教师授课信息
     */
    @Override
    public List<TC> getAllTC() {
        String sql = "select * from tc";
        try{
            List<TC> tcList = template.query(sql,new BeanPropertyRowMapper<TC>(TC.class));
            return tcList;
        }catch (Exception e){
            e.printStackTrace();
        }

        return null;
    }

    /**
     * 判断是否已有相同的授课信息
     *
     * @param cno 课程号
     * @return 是否存在选课的
     */
    @Override
    public boolean isExist(int cno) {
        if(getTeaCourse(cno)!=null)
            return true;
        return false;
    }

    /**
     * 获取一条授课信息
     *
     * @param cno 课程号
     * @return 授课记录
     */
    @Override
    public TC getTeaCourse(int cno) {
        String sql = "select * from tc where  cno = ?";
        try{
            TC tc = template.queryForObject(sql,new BeanPropertyRowMapper<TC>(TC.class),cno);
            return tc;
        }catch (Exception e){
            System.out.println(e);
            return null;
        }

    }


}
